package com.hhs.storage.bean;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.hhs.storage.util.SysUtil;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.io.Serializable;

/**
 * <p>
 * 个人计划
 * </p>
 *
 * @author hhs
 * @since 2023-01-13
 */
@Data
public class PersonalPlan implements Serializable {

    private static final long serialVersionUID = 1L;
    /**
     * 时间段分割数
     */
    public static final Integer TIME_NUM = 18;
    /**
     * 未完成
     */
    public static final Integer STATE_UNCOMPLETED = 0;
    /**
     * 状态完成
     */
    public static final Integer STATE_COMPLETE = 1;
    /**
     * 状态完成
     */
    public static final Integer TYPE_PERSONAL = 0;//日常事务
    public static final Integer TYPE_PROJECT = 1;//项目事务
    public static final Integer TYPE_FREE = 2;//空闲
    public static final Integer TYPE_ADDITIONAL = 3;//额外事务
    public static final Integer TYPE_ASK_FOR_LEAVE = 4;//请假
    public static final Integer TYPE_BUSINESS = 5;//业务专属

      /**
     * 主键
     */
        private String id;

    /**
     * 标题
     */
    private String title;
      /**
     * 工作日期
     */
      @JSONField(format="yyyy-MM-dd")
      @DateTimeFormat(pattern = "yyyy-MM-dd")
      private LocalDate workDate;

      /**
     * 计划内容
     */
      private String content;

      /**
     * 状态0-未完成 1-完成
     */
      private Integer state;

      /**
     * 用户id
     */
      private String userId;
    /**
     * 任务执行人信息
     */
    @TableField(exist = false)
    private BaseUser user;
      /**
     * 项目计划id
     */
      private String projectId;
    /**
     * 用户id
     */
    private String creatorId;
    /**
     * 创建人信息
     */
    @TableField(exist = false)
    private BaseUser creator;
      /**
     * 类型  0=日常事务，1=项目事务，2=空闲，3=额外事务
     */
      private Integer type;

      /**
     * 开始时间
     */
      @JSONField(format="HH:mm")
      @DateTimeFormat(pattern = "HH:mm")
      private LocalTime startTime;

      /**
     * 结束时间
     */
      @JSONField(format="HH:mm")
      @DateTimeFormat(pattern = "HH:mm")
      private LocalTime endTime;

      /**
     * 创建时间
     */
      @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
      @JSONField(format="yyyy-MM-dd HH:mm:ss")
      private LocalDateTime createTime;
    /**
     * 完成时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime completeTime;
      /**
     * 备注[未完成的原因]
     */
      private String remark;
      @TableField(exist = false)
      private ProjectPlan projectPlan;
      @TableField(exist = false)
      Boolean isFree = false;//个人计划是否空闲的标识
    @TableField(exist = false)
    private String selectTimeList;//选择的时间段列表
    @TableField(exist = false)
    private String selectDayList;//选择的日期列表

    @TableField(exist = false)
    private Integer replyState;//回复状态

    @TableField(exist = false)
    private String module;//回复状态

    @TableField(exist = false)
    private String oldId;//回复状态

    /**
     * 获取状态名
     * @return
     */
    public String getStateName(){
          return SysUtil.PLAN_STATE_MAP.get(this.state);
      }
    public String getTypeName(){
          return SysUtil.PLAN_TYPE_MAP.get(this.type);
      }
}
